package com.ruoyi.system.domain.project.teachpaper;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 教改论文信息对象 teachpaper_info
 * 
 * @author ruoyi
 * @date 2025-10-09
 */
public class TeachpaperInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 自增主键 */
    private Long id;

    /** 论文标题 */
    @Excel(name = "论文标题")
    private String paperTitle;

    /** DOI号 */
    @Excel(name = "DOI号")
    private String doiNumber;

    /** 署名情况 */
    @Excel(name = "署名情况")
    private String signatureStatus;

    /** 境外合作 */
    @Excel(name = "境外合作")
    private String overseasCooperation;

    /** 刊物/会议名称 */
    @Excel(name = "刊物/会议名称")
    private String publicationName;

    /** 发表时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发表时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date publishTime;

    /** 期刊收录情况 */
    @Excel(name = "期刊收录情况")
    private String inclusionStatus;

    /** 体现论文水平的描述文字（限30字） */
    @Excel(name = "体现论文水平的描述文字", readConverterExp = "限=30字")
    private String paperLevel;

    /** 上传附件地址 */
    @Excel(name = "上传附件地址")
    private String attachmentUrl;

    private Long deptId;

    private String currentRole;
    /** 创建人 */
    private Long authorId;
    /** 创建人名称 */
    private String authorName;
    /** 作者类型 */
    private int authorType;//1作者，2通讯作者
    /** 排序 */
    private int rank;
    /** 开始时间 */
    private Date beginTime;
    /** 结束时间 */
    private Date endTime;
    /** 作者 */
    private List<TeachpaperInfoTeacher> teachers;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setPaperTitle(String paperTitle) 
    {
        this.paperTitle = paperTitle;
    }

    public String getPaperTitle() 
    {
        return paperTitle;
    }

    public void setDoiNumber(String doiNumber) 
    {
        this.doiNumber = doiNumber;
    }

    public String getDoiNumber() 
    {
        return doiNumber;
    }

    public void setSignatureStatus(String signatureStatus) 
    {
        this.signatureStatus = signatureStatus;
    }

    public String getSignatureStatus() 
    {
        return signatureStatus;
    }

    public void setOverseasCooperation(String overseasCooperation) 
    {
        this.overseasCooperation = overseasCooperation;
    }

    public String getOverseasCooperation() 
    {
        return overseasCooperation;
    }

    public void setPublicationName(String publicationName) 
    {
        this.publicationName = publicationName;
    }

    public String getPublicationName() 
    {
        return publicationName;
    }

    public void setPublishTime(Date publishTime) 
    {
        this.publishTime = publishTime;
    }

    public Date getPublishTime() 
    {
        return publishTime;
    }

    public void setInclusionStatus(String inclusionStatus) 
    {
        this.inclusionStatus = inclusionStatus;
    }

    public String getInclusionStatus() 
    {
        return inclusionStatus;
    }

    public void setPaperLevel(String paperLevel) 
    {
        this.paperLevel = paperLevel;
    }

    public String getPaperLevel() 
    {
        return paperLevel;
    }

    public void setAttachmentUrl(String attachmentUrl) 
    {
        this.attachmentUrl = attachmentUrl;
    }

    public String getAttachmentUrl() 
    {
        return attachmentUrl;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("paperTitle", getPaperTitle())
            .append("doiNumber", getDoiNumber())
            .append("signatureStatus", getSignatureStatus())
            .append("overseasCooperation", getOverseasCooperation())
            .append("publicationName", getPublicationName())
            .append("publishTime", getPublishTime())
            .append("inclusionStatus", getInclusionStatus())
            .append("paperLevel", getPaperLevel())
            .append("attachmentUrl", getAttachmentUrl())
            .toString();
    }

    public Long getAuthorId() {
        return authorId;
    }

    public void setAuthorId(Long authorId) {
        this.authorId = authorId;
    }

    public String getAuthorName() {
        return authorName;
    }

    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    public int getAuthorType() {
        return authorType;
    }

    public void setAuthorType(int authorType) {
        this.authorType = authorType;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public List<TeachpaperInfoTeacher> getTeachers() {
        return teachers;
    }

    public void setTeachers(List<TeachpaperInfoTeacher> teachers) {
        this.teachers = teachers;
    }

    public Date getBeginTime() {
        return beginTime;
    }

    public void setBeginTime(Date beginTime) {
        this.beginTime = beginTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Long getDeptId() {
        return deptId;
    }

    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }

    public String getCurrentRole() {
        return currentRole;
    }

    public void setCurrentRole(String currentRole) {
        this.currentRole = currentRole;
    }
}
